Rendering 3D graphics on a screen has long been the province of 3D developers who have access to specialized graphics hardware (e.g., a game console, a graphics processing unit, etc.) and code-level access to such specialized graphics hardware. Design of scenes was often done by collaboration between a director and a 3D developer, where the director specifies the camera shots and motions or other events, and the 3D developer writes the code (e.g., drawing API) to carry out the specified camera shots and events when executed on the game hardware.
Due to improvements in computing platforms, 3D scenes can now be rendered on a many types of computing devices such as laptops, tablets, and smart phones. Further, due to advances in browser markup language technologies (e.g., HTML5, Javascript, WebGL, etc.), certain renderings that were formerly only possible on game consoles and/or using custom applications can now be rendered in the web browser of such devices using the native functionality of the browser. Such convergence of capability has created a desire for web designers to embed 3D scenes into their websites and web pages. Unfortunately, web designers typically do not have the 3D software expertise of 3D developers, resulting in a gap between web design environments and the 3D code design environments. Even with the advent of WebGL graphics drawing APIs, there still remains an abstraction gap between the programmer's use model and the web designer's use model.
Legacy approaches to enabling 3D content in web applications have failed, at least to the extent that the programming model gaps and skills gaps remain. Some approaches provide tools (e.g., rendering libraries) that add an abstraction layer on top of WebGL, yet fall short of bridging the remaining gap to the web design environment. Such approaches still require a specialized graphics programming skillset to efficiently create 3D content.
The problem to be solved is therefore rooted in technological limitations of the legacy approaches. Improved techniques, in particular improved application of technology, are needed to address the problem of enabling a web designer to specify camera shots and interaction events of a web-based 3D scene without demanding 3D graphics programming. More specifically, the technologies applied in the aforementioned legacy approaches fail to achieve sought-after capabilities of the herein disclosed techniques for composing web-based interactive 3D scenes using high order shot abstractions and high order event abstractions in a browser editor. What is needed is a technique or techniques to improve the application and efficacy of various technologies as compared with the application and efficacy of legacy approaches.